next buildでENAMETOOLONGが出たとき
generateStaticParams周りで起きやすい。
これが出る時は恐らくパスをencodeURIしているはず。というかnext devではencodeURIしないとそんなパスねーぞと怒られる。
しかしいざnext buildするとENAMETOOLONGのエラーがでる。一体どうしろという感じだがnext build時はnextjsがパスを見つけられなくても怒られないので以下のようなコードで対応
const paths = ["とても/長い/パス", ...];
export async function generateStaticParams() {
if (process.env.NODE_ENV === "production") {
return paths.map((p) => ({
path: p,
}));
}
return paths.map((p) => ({
path: p.map(encodeURI),
}));
}要するにnext buildとnext devで出し分けているだけ